<?php





/**
 * @author Julien Couture, Guillaume Tostain, Théo Portois
 * @version 1.0.0
 * @date 04/11/2014
 * @brief Controlleur des joueurs
 * @details Controlleur de la classe joueur comportant toute les fonctions associées au joueur et pouvant appeler les vues : vAddJoueur, vInscription, vLogin.
 */
class CJoueur extends \BaseController{

	
	
	
	
	
	/** 
	 * @see BaseController::index()
	 * @brief Affiche l'index du controlleur.
	 * @details	Charge le header, redirige si l'utilisateur est déja connecté et lance la fonction refresh().
	 */
	public function index($params=""){ 
		$this->loadView("vHeader");
		$this->redirection();
		$this->refresh();
		echo "<div id='divMessage'></div>";
	}
	
	
	
	
	
	/**
	 * @brief Charge l'affichage de la connexion
	 * @details Affiche le formulaire de connexion ainsi que les fonctions ajax associé.
	 */
	public function refresh(){
		//$joueurs=DAO::getAll("Joueur");
		$this->loadView("vLogin");
		//echo JsUtils::getAndBindTo(".delete", "click", "/trivia/CJoueur/delete","{}","#divMessage");
		echo JsUtils::getAndBindTo("#LienInscri", "click", "/trivia/CJoueur/viewInscription/","{}","#divMessage");
		echo JsUtils::postFormAndBindTo("#btValider1", "click", "/trivia/CJoueur/connexion/", "frmCo","body");

	}
	
	
	/**
	 * @param string $params La chaîne de charactère contenant l'id du joueur.
	 * @brief Supprime un joueur.
	 * @details Prend 
	 */
	public function delete($params){
		$param=str_replace("delete", "", $params[0]);
		$joueur=DAO::getOne("Joueur", $param);
		echo "<div id='divMessageContent'>";
		if($joueur instanceof Joueur){
			if(DAO::delete($joueur)==1){
				echo $joueur." supprim�";
				echo JsUtils::get("/trivia/CJoueur/refresh","{}","#divListe");
				echo JsUtils::doSomethingOn("#divMessageContent", "hide",5000);
			}
		}else {
			echo "Joueur inexistant";
		}
		echo "</div>";
	}
	
	
	
	
	/**
	 * @brief Charge la vue d'ajout de joueur
	 * @details Charge la vue d'ajout de joueur ainsi que les fonctions ajax associées.
	 */
	public function viewAddNew(){
		$this->loadView("vAddJoueur");
		echo JsUtils::postFormAndBindTo("#btValider", "click", "/trivia/CJoueur/addNew/", "frmAdd","#divMessage");
	}
	
	
	
	
	/**
	 * @brief Crée un nouveau joueur
	 * @details Récupere les valeurs du formulaire d'ajout de joueur qui sont instancié dans un objet joueur et inscris dans la base de données.
	 */
	public function addNew(){
		$nouveau=new Joueur();
		RequestUtils::setValuesToObject($nouveau);
		$monde=DAO::getOne("Monde", $_POST["idMonde"]);
		$nouveau->setMonde($monde);
		if(DAO::insert($nouveau)==1)
			echo "Insertion de ".$nouveau." ok";
			echo JsUtils::get("/trivia/CJoueur/refresh","{}","#divListe");
		}
		
				
		

		
		/**
		 * @brief Connecte un joueur.
		 * @details	Récupere les données du formulaire de connexion, vérifie s'ils sont correct, puis affiche la réponse.
		 */
		public function connexion(){
			$connexion=new Joueur();
			RequestUtils::setValuesToObject($connexion);
		 if($joueur=DAO::getOne("Joueur","login='".$_POST["Login"]."' AND password= '".$_POST["Password"]."'")){
            $_SESSION["joueur1"] = $joueur;
			echo 'Vous �tes maintenant connect�';
			$this->redirection();

        }
        else
            echo 'Identifiants incorrects';

    }
		
		
    
    
    
		/**
		 * @brief Charge la vue d'inscription
		 * @details Charge la vue d'inscription ainsi que les fonctions ajax associées.
		 */
		public function viewInscription(){
			//$this->loadView("vHeader");
			$this->loadView("vInscription");
			echo JsUtils::postFormAndBindTo("#btValider2", "click", "/trivia/CJoueur/inscription/", "frmInscri","#divMessage");
			echo JsUtils::doSomethingOn("#frmCo", "hide");
		}
		
		
		
		
		
		
		
		/**
		 * @brief Inscrit un nouveau joueur
	 	 * @details Récupere les valeurs du formulaire dinscription qui sont instancié dans un objet joueur et inscris dans la base de données.
		 */
		public function inscription(){
			$nouveau=new Joueur();
			RequestUtils::setValuesToObject($nouveau);
			$monde=DAO::getOne("Monde", $_POST["idMonde"]);
			$nouveau->setMonde($monde);
			if(DAO::insert($nouveau)==1){
				echo "Insertion de ".$nouveau." ok";
			}
			else{
				echo "erreur";
			}

		}
		
		
		
		
		/**
		 * @brief Redirige vers CPartie
		 * @details Verifie si le joueur est connecté, si oui il est redirigé vers CPartie (liste des parties).
		 */
		public function redirection(){
			if(!empty($_SESSION['joueur1'])){
				header('Location: /trivia/CPartie');
			}
		}
		
		
		
		/**
		 * @brief Retourne le joueur connecté
		 * @details Si le joueur est connecté, retourne la variable de session $_SESSION['joueur1'].
		 * @return Joueur $_SESSION['joueur1'] Les infos du joueurs en session.
		 */
		public static function loadPlayer(){
			if(isset($_SESSION['joueur1'])){
				
				return $_SESSION['joueur1'];
			}
		}
}
